home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
progargslib.lha
/
ProgArgs
/
Examples
/
Support
/
debug.h
next >
Wrap
C/C++ Source or Header
|
1995-04-08
|
6KB
|
166 lines
void __stdargs kprintf(unsigned char *fmt,...); // Serial debugging...
void __stdargs dprintf(unsigned char *fmt,...); // Parallel debugging...
/**
** Macros for outputing debugging info
**/
#ifndef STDLIB_ONLY
#include "proto/dos.h"
#ifndef bug
#define bug Printf
#endif
#ifndef DEBTIME
#define DEBTIME 0
#endif
#ifdef DEBUG
#define D(x) (x); if(DEBTIME>0) Delay(DEBTIME);
#else
#define D(x) ;
#endif
#else
#ifndef bug
#define bug printf
#endif
#ifndef DEBTIME
#define DEBTIME 0
#endif
#ifdef DEBUG
#define D(x) (x);
#else
#define D(x) ;
#endif
#endif
/**
** Macros for memory allocation debugging
**/
#define TYPE_NORM 0x00000000 /* This is a normal memory allocation */
#define TYPE_VEC 0x00000001 /* This is the 2.0 AllocVec() function */
#define TYPE_MLLC 0x00000002 /* This is the std malloc() function */
#define TYPE_POOL 0x00000003 /* This is the 3.0 CreatePool() function */
#define TYPE_SPDSLOW 0x8000000 /* Slower, but more carefull */
#define TYPE_SPDFAST 0x4000000 /* Faster, doesn't check addresses */
/* Where to send debugging info. */
extern UBYTE memory_report;
#define REPORT_NONE 0x00
#define REPORT_SERIAL 0x01
#define REPORT_PARALLEL 0x02
extern ULONG memory_logfh;
extern UBYTE memory_slow;
extern UBYTE memory_noreq;
void * __regargs debug_allocmem(ULONG size,ULONG flags,ULONG id,ULONG type,UBYTE *note);
void __regargs debug_freemem(void *addr,ULONG size,ULONG id,ULONG type,UBYTE *note);
void * __regargs debug_createpool(ULONG flags,ULONG puddle,ULONG thresh,ULONG id,ULONG type,UBYTE *note);
void __regargs debug_deletepool(void *pool,ULONG id,ULONG type,UBYTE *note);
void * __regargs generic_allocmem(ULONG size,ULONG flags,ULONG id,ULONG type,int line,
UBYTE *module);
void __regargs generic_freemem(void *addr,ULONG size,ULONG id,ULONG type,int line,
UBYTE *module);
void * __regargs generic_createpool(ULONG flags,ULONG puddle,ULONG thresh,ULONG id,ULONG type,int line,
UBYTE *module);
void __regargs generic_deletepool(void *pool,ULONG id,ULONG type,int line,
UBYTE *module);
void __regargs memory_finish(void);
void __regargs memory_finish_key(ULONG id);
#ifndef NOSYSFUNC
#if defined(DEBUG) || defined(CHK_MEMORY)
#define AllocMem(x,y) generic_allocmem(x,y,0,TYPE_NORM,__LINE__,(UBYTE*)__FILE__)
#define FreeMem(x,y) generic_freemem(x,y,0,TYPE_NORM,__LINE__,(UBYTE*)__FILE__)
#define AllocVec(x,y) generic_allocmem(x,y,0,TYPE_VEC,__LINE__,(UBYTE*)__FILE__)
#define FreeVec(x) generic_freemem(x,0,0,TYPE_VEC,__LINE__,(UBYTE*)__FILE__)
#define malloc(x) generic_allocmem(x,0,0,TYPE_MLLC,__LINE__,(UBYTE*)__FILE__)
#define free(x) generic_freemem(x,0,0,TYPE_MLLC,__LINE__,(UBYTE*)__FILE__)
#endif
#endif
#if defined(DEBUG) || defined(CHK_MEMORY)
#define DAllocMem(size,flags,type,note) debug_allocmem(size,flags,0,(type)|TYPE_NORM,note)
#define DFreeMem(addr,size,type,note) debug_freemem(addr,size,0,(type)|TYPE_NORM,note)
#define DAllocVec(size,flags,type,note) debug_allocmem(size,flags,0,(type)|TYPE_VEC,note)
#define DFreeVec(addr,type,note) debug_freemem(addr,0,0,(type)|TYPE_VEC,note)
#define Dmalloc(size,type,note) debug_allocmem(size,0,0,(type)|TYPE_MLLC,note)
#define Dfree(addr,type,note) debug_freemem(addr,0,0,(type)|TYPE_MLLC,note)
#define IAllocMem(x,y,id) generic_allocmem(x,y,id,TYPE_NORM,__LINE__,__FILE__)
#define IFreeMem(x,y,id) generic_freemem(x,y,id,TYPE_NORM,__LINE__,__FILE__)
#define IAllocVec(x,y,id) generic_allocmem(x,y,id,TYPE_VEC,__LINE__,__FILE__)
#define IFreeVec(x,id) generic_freemem(x,0,id,TYPE_VEC,__LINE__,__FILE__)
#define Imalloc(x,id) generic_allocmem(x,0,id,TYPE_MLLC,__LINE__,__FILE__)
#define Ifree(x,id) generic_freemem(x,0,id,TYPE_MLLC,__LINE__,__FILE__)
#define DFinishMem() memory_finish()
#define IFinishMem(id) memory_finish_key((ULONG)id)
#else
#define DAllocMem(size,flags,type,note) AllocMem(size,flags)
#define DFreeMem(addr,size,type,note) FreeMem(addr,size)
#define DAllocVec(size,flags,type,note) AllocVec(size,flags)
#define DFreeVec(addr,type,note) FreeVec(addr)
#define Dmalloc(size,type,note) malloc(size)
#define Dfree(addr,type,note) free(addr)
#define IAllocMem(size,flags,id) AllocMem(size,flags)
#define IFreeMem(addr,size,id) FreeMem(addr,size)
#define IAllocVec(size,flags,id) AllocVec(size,flags)
#define IFreeVec(addr,id) FreeVec(addr)
#define Imalloc(size,id) malloc(size)
#define Ifree(addr,id) free(addr)
#define DFinishMem() ;
#define IFinishMem(id) ;
#endif
#ifdef DBPRINT
extern void PokeB(BYTE *,BYTE *,BYTE,UBYTE *note);
extern void PokeUB(UBYTE *,UBYTE *,UBYTE,UBYTE *note);
extern void PokeW(WORD *,WORD *,WORD,UBYTE *note);
extern void PokeUW(UWORD *,UWORD *,UWORD,UBYTE *note);
extern void PokeL(LONG *,LONG *,LONG,UBYTE *note);
extern void PokeUL(ULONG *,ULONG *,ULONG,UBYTE *note);
extern BYTE PeekB(BYTE *,BYTE *,UBYTE *note);
extern UBYTE PeekUB(UBYTE *,UBYTE *,UBYTE *note);
extern WORD PeekW(WORD *,WORD *,UBYTE *note);
extern UWORD PeekUW(UWORD *,UWORD *,UBYTE *note);
extern LONG PeekL(LONG *,LONG *,UBYTE *note);
extern ULONG PeekUL(ULONG *,ULONG *,UBYTE *note);
#else
#define PokeB(s,a,v,n) (*((BYTE *)(a)) = (BYTE)(v))
#define PokeUB(s,a,v,n) (*((UBYTE *)(a)) = (UBYTE)(v))
#define PokeW(s,a,v,n) (*((WORD *)(a)) = (WORD)(v))
#define PokeUW(s,a,v,n) (*((UWORD *)(a)) = (UWORD)(v))
#define PokeL(s,a,v,n) (*((LONG *)(a)) = (LONG)(v))
#define PokeUL(s,a,v,n) (*((ULONG *)(a)) = (ULONG)(v))
#define PeekB(s,a,n) (*((BYTE *)(a)))
#define PeekUB(s,a,n) (*((UBYTE *)(a)))
#define PeekW(s,a,n) (*((WORD *)(a)))
#define PeekUW(s,a,n) (*((UWORD *)(a)))
#define PeekL(s,a,n) (*((LONG *)(a)))
#define PeekUL(s,a,n) (*((ULONG *)(a)))
#endif